#ifndef MUSIC_H
#define MUSIC_H

#include <QUrl>

class Music
{
public:
    Music();
    Music(QUrl url);

    // 设置成员变量的方法
    void setMusicId(const QString& musicId);
    void setMusicName(const QString& musicName);
    void setMusicSinger(const QString& musicSinger);
    void setMusicAlbum(const QString& musicAlbum);
    void setDuration(const qint64& duration);
    void setIsLike(bool isLike);
    void setIsHistory(bool isHistory);
    void setMusicUrl(const QUrl& musicUrl);
    // 获取成员变量的方法
    QString getMusicName() const;
    QString getMusicSinger() const;
    QString getMusicAlbum() const;
    qint64 getDuration() const;
    bool getIsLike() const;
    bool getIsHistory() const;
    QUrl getMusicUrl() const;
    QString getMusicId() const;

    // 获取这个歌曲的 lrc 歌词文件的路径
    QString getLrcFilePath();
    // 将这首歌曲的信息写入数据库中
    void insertMusicToDB();

private:
    void parseMediaMetaMusic();

private:
    // 为了表示每首歌曲的唯一性，我们为每个歌曲都设置一个 id 来保证唯一性，这个id使用 QUuid 自动生成
    QString musicId;
    // 音乐名称
    QString musicName;
    // 音乐作者
    QString musicSinger;
    // 音乐专辑
    QString musicAlbum;
    // 持续时长：用ms来表示
    qint64 duration;
    // 是否收藏喜欢
    bool isLike;
    // 是否为历史播放
    bool isHistory;
    // 音乐的路径
    QUrl musicUrl;
};

#endif // MUSIC_H
